package lc.q101_150;

import lc.q51_100.Q120;

public class Q122 {

    public int maxProfit(int[] prices) {
        // 状态表示对应某一天持有现金还是股票时，手里拥有的最大的现金
        // 实际上当前值只与前面的值有关，所以，定义两个变量即可
        int cash = 0;
        int stock = - prices[0];
        for (int i = 1; i < prices.length; i++) {
            int price = prices[i];
            // 持有现金有两个办法，前面持有现金并且不买股票，或者前面持有股票，此时卖掉股票
            cash = Integer.max(cash, stock + price);
            stock = Integer.max(stock, cash - price);
        }
        return cash;
    }

    public static void main(String[] args) {
        System.out.println(new Q122().maxProfit(new int[]{7, 1, 5, 3, 6, 4}));
        System.out.println(new Q122().maxProfit(new int[]{1,2,3,4,5}));
    }
}
